package com.kwq.designPattern.generate.singleton;

/**
 * @author kangwanqiang
 * @date 2021/2/2
 * @description 双重校验锁单例模式，可以实现多线程并发情况下的懒加载
 */
public class DoubleValidate {
    private static final Object lock = new Object();
    private static DoubleValidate singleton = null;
    private DoubleValidate(){}
    public static DoubleValidate getInstance(){
        //第一次校验
        if (singleton == null){
            synchronized (lock){
                //第二次校验
                if (singleton == null){
                    singleton = new DoubleValidate();
                }
            }
        }
        return singleton;
    }
}
